#ifndef TIER_APP
#define TIER_APP

#include <stdio.h>

typedef char* packet_t; /* ATENCAO packet_t eh um ponteiro! */

#define APP_H 1 /* Tamanho do cabecalho do pacote da aplicacao em bytes */
#define MAX_FNAME 100 /* Tamanho maximo do nome de um arquivo em bytes */
#define MAK_PKTS 2000 /* Tamanho maximo que um pacote pode ter */

/*Deve ser chamada ao iniciar o cliente\servidor*/
packet_t app_init();

/*Deve ser chamada no fim do teste*/
void app_end(packet_t *pkt);


/*Envia menssagem de erro - epecifico para tentativa de abrir um arquivo.*/
void app_fileerror(char *errmsg, packet_t* pkt);

/*Configura o tamanho maximo do pacote*/
void app_set_pkt_maxs();

/*Retorna o tamanho maximo da parte de dados*/
int app_get_ptk_maxs();

/*Envia o pacote pkt de tamanho msglen*/
void app_send(packet_t *pkt, int msglen);

/*Recebe o pacote pkt e retorna a quantidade de bytes lidos*/
int app_recv(packet_t *pkt);

/*Retorna o caractere do cabecaho*/
char app_get_h(packet_t *pkt);

/*Preenche o cabelho com o caractere h*/
void app_set_h(packet_t *pkt, char h);


/*Recebe um arquivo do cliente/servidor*/
void app_cs_recv(packet_t *pkt, FILE **f);


/*Envia um arquivo para o cliente/servidor*/
void app_cs_send(packet_t *pkt, FILE **f);


#endif


